#ifndef _WavePlotInterface_H_
#define _WavePlotInterface_H_

#include <QWidget>
#include <QTimer>
#include <QLabel>
#include <armadillo>

#include "BRE_EEG_dataStruct.h"
#include "GenEEGData.h"
#include "qcustomplot.h"


class WavePlotInterface : public QWidget
{
    Q_OBJECT
    friend class TreeDirectoryInterface;
public:
    explicit WavePlotInterface(QCustomPlot *wavePlot,uint8_t channalNum, double ratio, double offset, double timeScale);
    ~WavePlotInterface();
    int plotInit();
    void begin_plot();
    void plotDataUpdate(const GenEEGData& data);
    


public slots:
    // 添加放大器的数据
    // void receive_eegData(const arma::mat& data);
    // void receive_eegData(const std::vector<EEG_VOLTAGE>& data);
    // void addData();
    void addData(const GenEEGData& inputData);

    void timeToRePlot();
    void stopPlot();
    void clearAll();

    void amplitudeRatioUpdate(double ratio);
    void amplitudeOffsetUpdate(double offset);
    void timeScaleUpdate(double scale);

private:
    // 脑电图
    QCustomPlot *wavePlot;
    // 一条线上同时显示的点数
    int pointNumPerLine;
    // 曲线条数
    int  m_countGraph;
    // 刷新数据的位置
    long long plot_index;

    // 缓存波形数据点数
    long max_points = 10000;
    // x轴
    QVector<double> xValVec;
    QVector<QVector<double>> yValVec;



    QTimer timer_rePlot;
    QTimer timer_addData;
    // bool  m_start_wave;
    bool flag_wavePlotting;
    // std::vector<EEG_VOLTAGE> eegData_voltage;
    // arma::mat eegData_voltage;
    // GenEEGData eegData_voltage;

    // 波形幅值缩放比例
    double amplitudeRatio;
    // 波形幅值偏移
    double amplitudeOffset;
    // 波形时间尺度
    double timeScale;
};

#endif // !_WavePlotInterface_H_